perm filename NET.FAI[S,NET] blob sn#851713 filedate 1988-01-18 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE NET  History A B C D X Y Z P NAMLEN PDLEN NAMES PDL NLIST NSTAT NDOWN NUP NETNAM CRLF START SHOW CMDERR CMD CMD1 CMD2 CMDD CMDU NETLUZ TYPSIX TYPSI1
C00007 ENDMK
C⊗;
	TITLE NET ;⊗ History A B C D X Y Z P NAMLEN PDLEN NAMES PDL NLIST NSTAT NDOWN NUP NETNAM CRLF START SHOW CMDERR CMD CMD1 CMD2 CMDD CMDU NETLUZ TYPSIX TYPSI1

COMMENT $

Program to take networks up and down and other useful things.

History (add changes at end):

16 Feb 86  JJW	Initial implementation
18 Jan 88  JJW	Changed command syntax, added Exit and Reinit commands.

History: add changes above this line.

$	;end of comment

OPDEF NETUUO [CALLI 400135]

A←1
B←2
C←3
D←4
X←5
Y←6
Z←7
P←17

IMP←←0

NAMLEN←10
PDLEN←40

NAMES:	BLOCK NAMLEN
PDL:	BLOCK PDLEN

;Argument blocks for NETUUO functions

NLIST:	1
	0
	-NAMLEN,,NAMES

NSTAT:	2
	0
	0

NDOWN:	3
	0
	0

NUP:	4
	0
	0

NETNAM:	0
CRLF:	BYTE (7)15,12

START:	RESET
	MOVE P,[IOWD PDLEN,PDL]

	;Get list of network names
	MOVEI A,NLIST
	NETUUO A,
	 PUSHJ P,NETLUZ

	;Print name and status of each network
	SETZ C,
SHOW:	SKIPN A,NAMES(C)	;Get a network name
	JRST CMD0		;No more networks
	MOVEM A,NSTAT+1		;Put in arg block
	PUSHJ P,TYPSIX
	OUTSTR [ASCIZ/:	/]
	MOVEI A,NSTAT
	NETUUO A,
	 PUSHJ P,NETLUZ
	HRRE A,NSTAT+2
	MOVEI B,[ASCIZ/Down/]
	SKIPE A
	MOVEI B,[ASCIZ/Up/]
	OUTSTR (B)
	OUTSTR CRLF
	AOJA C,SHOW

CMD0:	OUTSTR [ASCIZ/Commands: D(own), U(p), R(einit), E(xit)
/]
CMD:	OUTSTR [ASCIZ/*/]
	INCHRW D
	CAIL D,140
	SUBI D,40
	CAIN D,"D"
	JRST CMDD
	CAIN D,"E"
	JRST CMDE
	CAIN D,"R"
	JRST CMDR
	CAIN D,"U"
	JRST CMDU
	CAIN D,15
	INCHRW D		;Read LF following CR
	CAIE D,12
	CAIN D,175
	JRST CMD		;Abort command, start over
	OUTSTR [ASCIZ/
Unknown command
/]
	JRST CMD

CMDE:	OUTSTR CRLF
	EXIT

CMDD:	OUTSTR [ASCIZ/own/]	;Take network down
	PUSHJ P,GETNET
	MOVE A,NETNAM
	MOVEM A,NDOWN+1
	MOVEI A,NDOWN
	NETUUO A,
	 PUSHJ P,NETLUZ
	OUTSTR [ASCIZ/ -- OK --
/]
	JRST CMD

CMDU:	OUTSTR [ASCIZ/p/]	;Bring network up
	PUSHJ P,GETNET
	MOVE A,NETNAM
	MOVEM A,NUP+1
	MOVEI A,NUP
	NETUUO A,
	 PUSHJ P,NETLUZ
	OUTSTR [ASCIZ/ -- OK --
/]
	JRST CMD

NETLUZ:	OUTSTR [ASCIZ/
Network UUO failed.  Perhaps you don't have the DEV privilege.
/]
	EXIT

CMDR:	OUTSTR [ASCIZ/einitialize IMP.  This will close all TCP connections.
Type Y to confirm: /]
	INCHWL D
	CLRBFI
	CAIE D,"Y"
	CAIN D,"y"
	JRST CMDR1
	OUTSTR [ASCIZ/Never mind.
/]
	JRST CMD

CMDR1:	INIT IMP,17		;Initialize IMP, dump mode
	 SIXBIT/IMP/
	 0,,0
	 JRST 4,.
	MTAPE IMP,[12]		;Do it
	RELEAS IMP,
	JRST CMD

;Type sixbit name in A.
TYPSIX:	MOVE Y,A
TYPSI1:	SETZ X,
	LSHC X,6
	ADDI X,40
	OUTCHR X
	JUMPN Y,TYPSI1
	POPJ P,

;Match input character to network name.  All networks start with
;unique characters for now, make this smarter if they ever don't.
GETNET:	OUTSTR [ASCIZ/ network /]
	INCHRW D
	CAIL D,140
	SUBI D,40
	SETZ C,
GETN1:	SKIPN B,NAMES(C)
	JRST GETN2
	SETZ A,
	LSHC A,6
	CAIE D,40(A)		;Skip if first char matches
	AOJA C,GETN1
	MOVE A,B		;Print rest of name
	PUSHJ P,TYPSIX
	MOVE B,NAMES(C)		;Save name for later use
	MOVEM B,NETNAM
	POPJ P,

GETN2:	OUTSTR [ASCIZ/? unknown network
/]
	JRST CMD

	END START